Hearthstone is a popular collectible card game published by Blizzard Entertainment in 2014, which is based on the Warcraft series by the same company. The goal of the game is to build a deck of 30 cards and defeat the opponent who also has a deck of 30 cards.
In Hearthstone, cards can be classified according to the following categories:
Which are the most popular cards used in Ranked decks?
Which are the most popular cards used in Ranked decks?
We focus on the Ranked format where players get to decide which cards to include in their deck, therefore the cards’ popularity are more accurately represented, and the gameplay is not subject to additional constraints that other game modes (like Tavern Brawls and Adventures) may impose.
How do we determine popularity?
We determine popularity by the number of decks that include at least 1 copy in the starting 30 cards (not generated by other effects).
A deck can include at most 2 copies of any card (1 for Legendary cards), thus a card’s popularity is not heavily influenced by the number of copies players wish to use.
Possible biases to consider
Decks and cards presented in this data may not necessarily be used by players in the game itself. However, without the means to track actual matches being played in the game itself, we instead use the list of decks submitted by players as an approximation of the decks and cards often used by the playerbase.
Since Neutral cards can be used by multiple classes, they should be more popular than Class cards.
For the Wild format, cards from the older sets may be more popular simply because they have been in the game longer.
For the Standard format, cards from the Basic and Classic sets will be more popular because they do not rotate out of the format unlike expansion cards.
If a certain card becomes too popular (i.e. the community thinks players must include it in their decks), it reduces the card variety in the metagame and makes gameplay frustrating for other players (amongst other consequences). In the long term, this may lead to player attrition and loss of potential revenue (when players purchase card packs or other cosmetics).
Historically, Blizzard has dealt with problematic cards in one of several ways:
We will use three datasets in this analysis:
data.csv contains a list of decks submitted by players to HearthPwn from 2013 (pre-launch) to 2017.
refs.json contains detailed information about all cards (collectible and non-collectible) up to March 2017.
cards_collectible.json contains detailed information about the cards that are collectible in the game (up to August 2018)
The first few rows and columns of the raw data decks_raw is shown below:
| craft_cost | date | deck_archetype | deck_class | deck_format | deck_id | deck_set | deck_type | rating | title |
|---|---|---|---|---|---|---|---|---|---|
| 9740 | 2016-02-19 | Unknown | Priest | W | 433004 | Explorers | Tavern Brawl | 1 | Reno Priest |
| 9840 | 2016-02-19 | Unknown | Warrior | W | 433003 | Explorers | Ranked Deck | 1 | RoosterWarrior |
| 2600 | 2016-02-19 | Unknown | Mage | W | 433002 | Explorers | Theorycraft | 1 | Annoying |
| 15600 | 2016-02-19 | Unknown | Warrior | W | 433001 | Explorers | None | 0 | Standart pay to win warrior |
| 7700 | 2016-02-19 | Unknown | Paladin | W | 432997 | Explorers | Ranked Deck | 1 | Palamix |
| 5740 | 2016-02-19 | Unknown | Warrior | W | 432995 | Explorers | Ranked Deck | 2 | Kolento’s Elise Control Warrior |
The decks_raw data has 346232 rows and 41 columns. The columns craft_cost to user describe the deck’s attributes (like date submitted, class, deck format) while the columns card_0 to card_29 describe the cards using their card IDs. Detailed information on the variables can be found on the Kaggle: History of Hearthstone.
## [1] "craft_cost" "date" "deck_archetype" "deck_class"
## [5] "deck_format" "deck_id" "deck_set" "deck_type"
## [9] "rating" "title" "user" "card_0"
## [13] "card_1" "card_2" "card_3" "card_4"
## [17] "card_5" "card_6" "card_7" "card_8"
## [21] "card_9" "card_10" "card_11" "card_12"
## [25] "card_13" "card_14" "card_15" "card_16"
## [29] "card_17" "card_18" "card_19" "card_20"
## [33] "card_21" "card_22" "card_23" "card_24"
## [37] "card_25" "card_26" "card_27" "card_28"
## [41] "card_29"
There are 8 rows that contain missing data. All the missing values are in the title column, so they can be safely ignored.
| date | deck_archetype | deck_class | deck_format | deck_id | deck_set | deck_type | rating | title |
|---|---|---|---|---|---|---|---|---|
| 2016-06-22 | Unknown | Hunter | S | 576543 | Old Gods | Theorycraft | 1 | NA |
| 2014-07-20 | Unknown | Rogue | S | 74841 | Live Patch 5506 | Ranked Deck | 0 | NA |
| 2013-11-19 | Unknown | Priest | S | 17994 | Beta Patch 3937 | Arena | 1 | NA |
| 2013-11-03 | Unknown | Hunter | S | 15525 | Beta Patch 3937 | None | 1 | NA |
| 2015-08-30 | Unknown | Paladin | W | 318748 | TGT Launch | None | 1 | NA |
| 2015-12-23 | Unknown | Shaman | W | 400510 | Explorers | None | 1 | NA |
| 2015-12-20 | Unknown | Shaman | W | 399274 | Explorers | None | 1 | NA |
| 2015-12-20 | Unknown | Shaman | W | 399273 | Explorers | None | 1 | NA |
The first few rows and columns of the cards_raw data is shown below (some columns are shown truncated):
| artist | cardClass | collectible | cost | dbfId | flavor | id | name | rarity | set | text | type |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Nutthap… | MAGE | TRUE | 5 | 2539 | It’s on… | AT_001 | Flame L… | COMMON | TGT | Deal $8… | SPELL |
| Tooth | MAGE | TRUE | 3 | 2541 | Burning… | AT_002 | Effigy | RARE | TGT | Secr… | SPELL |
| Arthur … | MAGE | TRUE | 2 | 2545 | And he … | AT_003 | Fallen … | RARE | TGT | Your He… | MINION |
| Gabor S… | MAGE | TRUE | 1 | 2572 | Now wit… | AT_004 | Arcane … | EPIC | TGT | Deal $2… | SPELL |
| Mike Sass | MAGE | TRUE | 3 | 2542 | It’s al… | AT_005 | Polymor… | RARE | TGT | Transfo… | SPELL |
| Dan Scott | MAGE | TRUE | 4 | 2549 | Is he a… | AT_006 | Dalaran… | COMMON | TGT | Insp… | MINION |
This dataset has 1751 rows and 65 columns. The first 32 columns artist to questReward describe the characteristics of each card.
## [1] "artist" "cardClass" "collectible"
## [4] "cost" "dbfId" "flavor"
## [7] "id" "name" "rarity"
## [10] "set" "text" "type"
## [13] "mechanics" "attack" "health"
## [16] "referencedTags" "race" "elite"
## [19] "targetingArrowText" "durability" "overload"
## [22] "spellDamage" "armor" "faction"
## [25] "howToEarn" "howToEarnGolden" "collectionText"
## [28] "classes" "multiClassGroup" "entourage"
## [31] "hideStats" "questReward"
Some of the characteristics, including name, Mana cost, race, health and text, can also been seen on the card itself. Some of the mechanics are also highlighted in bold:
The remaining columns are in fact nested under the playRequirements field, which specifies how certain cards can only be played in the game. These requirements are also implicitly/explicitly stated in the card text. (Column names are shown truncated)
## [1] "...ents.REQ_MINION_TARGET" "...nts.REQ_TARGET_TO_PLAY"
## [3] "...ments.REQ_ENEMY_TARGET" "...s.REQ_TARGET_WITH_RACE"
## [5] "..._MINIMUM_ENEMY_MINIONS" "...s.REQ_TARGET_FOR_COMBO"
## [7] "...ts.REQ_FRIENDLY_TARGET" "...EQ_TARGET_IF_AVAILABLE"
## [9] "...s.REQ_NUM_MINION_SLOTS" "...NIMUM_FRIENDLY_MINIONS"
## [11] "...ARGET_WITH_DEATHRATTLE" "...OF_RACE_DIED_THIS_GAME"
## [13] "..._MINION_DIED_THIS_GAME" "...s.REQ_LEGENDARY_TARGET"
## [15] "...BLE_AND_DRAGON_IN_HAND" "....REQ_TARGET_MAX_ATTACK"
## [17] "...nts.REQ_NONSELF_TARGET" "...s.REQ_STEALTHED_TARGET"
## [19] "...ements.REQ_HERO_TARGET" "...T_OR_MANA_CRYSTAL_SLOT"
## [21] "...s.REQ_UNDAMAGED_TARGET" "...ts.REQ_WEAPON_EQUIPPED"
## [23] "...nts.REQ_DAMAGED_TARGET" "...EQ_MUST_TARGET_TAUNTER"
## [25] "....REQ_TARGET_MIN_ATTACK" "..._MINIMUM_TOTAL_MINIONS"
## [27] "...ments.REQ_DRAG_TO_PLAY" "...ONE_CAP_FOR_NON_SECRET"
## [29] "...ents.REQ_FROZEN_TARGET" "...NO_3_COST_CARD_IN_DECK"
## [31] "...NIMUM_FRIENDLY_SECRETS" "...s.REQ_CANNOT_PLAY_THIS"
## [33] "...ENTAL_PLAYED_LAST_TURN"
The following card, based on its text, would require certain conditions to be played (a minion on the board, that has not taken any damage):
Additional information on the variables can be found on HearthstoneJSON.
Each card has two unique identifiers: a character/string id and an integer dbfId. The integer dbfId is used across both the deck and card datasets, which can be joined later.
The following steps were involved in pre-processing the raw data:
deck_id.hsyear variable that categorizes deck submissions into year-long periods that determine which Hearthstone card sets are eligible for Standard format play.
hsyear begins with the release of the first expansion card set in that calendar year.hsmonth variable, based on calendar months, categorizing deck submissions into month-long Ranked Seasons. Rankings are reset at the start of each season, giving players opportunities to try out new decks and improve on their previous ranking.deck_format column, relabel all decks submitted before 2016-04-26 as “Standard”.
A summary of the processed deck attribute data decks_attr is shown below:
## deck_id craft_cost date
## Min. : 36923 Min. : 0 Min. :2014-03-11
## 1st Qu.:253573 1st Qu.: 2840 1st Qu.:2015-05-26
## Median :428597 Median : 5120 Median :2016-02-09
## Mean :419989 Mean : 5745 Mean :2015-12-21
## 3rd Qu.:603508 3rd Qu.: 7840 3rd Qu.:2016-08-09
## Max. :749548 Max. :48000 Max. :2017-03-19
##
## deck_archetype deck_class deck_format
## Unknown :220501 Mage :42230 S:307743
## Midrange Shaman: 5472 Priest :41756 W: 16361
## Control Priest : 5135 Paladin:39368
## Control Warrior: 4939 Warlock:35598
## Tempo Mage : 4545 Druid :35488
## Midrange Hunter: 4371 Shaman :33969
## (Other) : 79141 (Other):95695
## deck_set deck_type rating
## Explorers : 57307 Arena : 8178 Min. : 0.000
## Old Gods : 49895 None : 75120 1st Qu.: 1.000
## Blackrock Launch: 38900 PvE Adventure: 9059 Median : 1.000
## Gadgetzan : 31329 Ranked Deck :202104 Mean : 2.777
## Naxx Launch : 22283 Tavern Brawl : 6360 3rd Qu.: 1.000
## Yogg Nerf : 22175 Theorycraft : 19686 Max. :4016.000
## (Other) :102215 Tournament : 3597
## title user hsmonth hsyear
## Length:324104 Length:324104 Min. :2014 2014: 65119
## Class :character Class :character 1st Qu.:2015 2015:128062
## Mode :character Mode :character Median :2016 2016:130923
## Mean :2016
## 3rd Qu.:2017
## Max. :2017
##
set column with the actual names of the card sets.The factor/enumerated columns are then identified and recast accordingly.
A summary of the processed collectible card data cards_simple is shown below:
## dbfId name cost cardClass
## Min. : 7 Length:1751 Min. : 0.000 Neutral:657
## 1st Qu.: 1987 Class :character 1st Qu.: 2.000 Paladin:123
## Median :38957 Mode :character Median : 4.000 Hunter :122
## Mean :25375 Mean : 3.856 Mage :122
## 3rd Qu.:43163 3rd Qu.: 5.000 Warlock:122
## Max. :53187 Max. :20.000 Druid :121
## NA's :22 (Other):484
## rarity type collectible id
## Common :612 Hero : 33 Mode:logical Length:1751
## Epic :298 Minion:1192 TRUE:1751 Class :character
## Free :142 Spell : 471 Mode :character
## Legendary:253 Weapon: 55
## Rare :446
##
##
## card_set
## Classic :236
## Basic :142
## Journey to Un'Goro :135
## Knights of the Frozen Throne:135
## Kobolds & Catacombs :135
## The Boomsday Project :135
## (Other) :833
Card IDs in the processed decks data may be incorrect, due to the following reasons:
Therefore, we would like to relabel any card IDs that point to non-collectible cards with the respective IDs that point to the collectible version with the same name.
The following steps were taken:
cards_simple.cards_all_raw, filter out the cards matching the above IDs.cards_simple data, based on same names.The dbfID.x on the left would be replaced by the dbfID.y on the right:
| dbfId.x | name | dbfId.y | cost | cardClass | rarity | type | collectible | id | card_set |
|---|---|---|---|---|---|---|---|---|---|
| 40341 | Cleave | 940 | 2 | Warrior | Free | Spell | TRUE | CS2_114 | Basic |
| 2177 | Dark Wispers | 2009 | 6 | Druid | Epic | Spell | TRUE | GVG_041 | Goblins vs Gnomes |
| 42146 | Doppelgangster | 40953 | 5 | Neutral | Rare | Minion | TRUE | CFM_668 | Mean Streets of Gadgetzan |
| 38319 | Druid of the Claw | 692 | 5 | Druid | Common | Minion | TRUE | EX1_165 | Classic |
| 2230 | Druid of the Fang | 2048 | 5 | Druid | Common | Minion | TRUE | GVG_080 | Goblins vs Gnomes |
| 2310 | Druid of the Flame | 2292 | 3 | Druid | Common | Minion | TRUE | BRM_010 | Blackrock Mountain |
To facilitate relabeling, we create a list of key-values that associate each dbfID.x with the corresponding dbfID.y, which can be used in conjunction with the function recode() that replaces character values by name.
The question we are trying to answer is
Which are the most popular cards used in Ranked decks (Standard format)?
We measure card popularity by counting the number of decks that include at least one copy of that card.
To begin, we filter only for Ranked Decks in Standard format, pick out the variables of interest, join the decks to their compositions, and pivot the card columns.
## Observations: 3,806,924
## Variables: 9
## $ deck_id <int> 433003, 432997, 432995, 432992, 432990, 432989, 43...
## $ deck_class <fct> Warrior, Paladin, Warrior, Priest, Mage, Mage, Rog...
## $ date <date> 2016-02-19, 2016-02-19, 2016-02-19, 2016-02-19, 2...
## $ hsmonth <S3: yearmon> Feb 2016, Feb 2016, Feb 2016, Feb 2016, Fe...
## $ hsyear <fct> 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 20...
## $ deck_format <fct> S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,...
## $ deck_set <fct> Explorers, Explorers, Explorers, Explorers, Explor...
## $ craft_cost <int> 9840, 7700, 5740, 8780, 2800, 0, 2980, 1540, 4440,...
## $ card_id <int> 75, 476, 75, 272, 113, 77, 251, 242, 290, 180, 476...
Before any further analysis, we want to check how many cards in this dataset are mislabelled:
## [1] 0
We use the list mislab_recode to relabel those cards:
## [1] 0
To derive overall card popularity, we just count the number of times each card_id appears, then join it to the cards_simple data to retrieve the card details. After that, we can sort by number of decks:
As the table below shows, the most popular cards are expected to be Neutral class since they can be used by all nine classes in the game, as opposed to Class-specific cards:
| Name | Class | Rarity | Card Set | No. of Decks | % of All Decks |
|---|---|---|---|---|---|
| Azure Drake | Neutral | Rare | Hall of Fame | 62327 | 32.2 |
| Sylvanas Windrunner | Neutral | Legendary | Hall of Fame | 46499 | 24.0 |
| Emperor Thaurissan | Neutral | Legendary | Blackrock Mountain | 37614 | 19.4 |
| Dr. Boom | Neutral | Legendary | Goblins vs Gnomes | 37033 | 19.1 |
| Sludge Belcher | Neutral | Rare | Curse of Naxxramas | 34718 | 17.9 |
| Defender of Argus | Neutral | Rare | Classic | 31081 | 16.1 |
| Ragnaros the Firelord | Neutral | Legendary | Hall of Fame | 29656 | 15.3 |
| Piloted Shredder | Neutral | Common | Goblins vs Gnomes | 28434 | 14.7 |
| Acolyte of Pain | Neutral | Common | Classic | 28340 | 14.6 |
| Bloodmage Thalnos | Neutral | Legendary | Classic | 28227 | 14.6 |
Which abilities/properties makes these cards popular?
As the Hall of Fame was only created in April 2017; the popularity of those three cards (Azure Drake, Sylvanas Windrunner, Ragnaros the Firelord) may have been one of the factors behind Blizzard’s decision to move them out of Standard format and into the Hall of Fame.
The plot below shows the relative popularity of all cards in the dataset:
So we can follow up by asking:
Amongst class-specific cards, which is the most popular card for each class?
By tallying the total number of decks by class, we can later evaluate for each class, the percentage of decks which use the most popular class-specific cards. After filtering out the Neutral cards, we can look for the most popular class-specific cards:
The most popular class-specific cards are as follows:
| Class | Name | Rarity | Card Set | No. of Decks | Total No. of Class Decks | % of Class Decks |
|---|---|---|---|---|---|---|
| Druid | Swipe | Free | Basic | 18802 | 20163 | 93.3 |
| Hunter | Animal Companion | Free | Basic | 15772 | 18226 | 86.5 |
| Mage | Frostbolt | Free | Basic | 22374 | 23850 | 93.8 |
| Paladin | Truesilver Champion | Free | Basic | 20395 | 23742 | 85.9 |
| Priest | Shadow Word: Death | Free | Basic | 21863 | 24396 | 89.6 |
| Rogue | Eviscerate | Common | Classic | 17717 | 19058 | 93.0 |
| Shaman | Hex | Free | Basic | 16880 | 21099 | 80.0 |
| Warlock | Power Overwhelming | Common | Hall of Fame | 13400 | 21268 | 63.0 |
| Warrior | Fiery War Axe | Free | Basic | 20856 | 21776 | 95.8 |
Which abilities/properties makes the above cards popular?
Some of the other popular cards (in the following plot) also have effects like card draw or area of effect.
While Frostbolt appeared in the largest number of decks, many of the most popular cards were included in more than 90% of decks from their class. The only exception would be Power Overwhelimg (Warlock) which only appeared in 63% of Warlock decks.
As the table shows, cards from the Basic and Classic sets tend to be more popular because they do not rotate out of Standard format, and they have been around since the launch of Hearthstone.
The following plot shows the relative popularity of the top 3 cards for each class. Dashed lines indicate the total number of decks representing each class in the dataset:
## Warning: Removed 21 rows containing missing values (geom_point).
Our decks_attr data spans 3 years from March 2014 to March 2017. Recall that years are defined by release dates of card sets instead of calendar months:
To derive card popularity, we count the number of times each card_id appears in each hsyear:
The following table shows the top 3 cards for each year. As expected, Neutral cards are used more often than class-specific cards. At the same time, the most popular card in 2015 and 2016 (Dr. Boom and Azure Drake) were considered even more essential than the others, considering that they were included in more than 40% of decks submitted:
| Year | Name | Rarity | Card Set | No. of Decks | Total No. of Decks | % of Decks |
|---|---|---|---|---|---|---|
| 2014 | Sludge Belcher | Rare | Curse of Naxxramas | 10490 | 35791 | 29.3 |
| 2014 | Defender of Argus | Rare | Classic | 8832 | 35791 | 24.7 |
| 2014 | Harvest Golem | Common | Classic | 8814 | 35791 | 24.6 |
| 2015 | Dr. Boom | Legendary | Goblins vs Gnomes | 31770 | 73406 | 43.3 |
| 2015 | Sludge Belcher | Rare | Curse of Naxxramas | 24227 | 73406 | 33.0 |
| 2015 | Piloted Shredder | Common | Goblins vs Gnomes | 23333 | 73406 | 31.8 |
| 2016 | Azure Drake | Rare | Hall of Fame | 34079 | 84381 | 40.4 |
| 2016 | Sylvanas Windrunner | Legendary | Hall of Fame | 21198 | 84381 | 25.1 |
| 2016 | Brann Bronzebeard | Legendary | League of Explorers | 19699 | 84381 | 23.3 |
Which abilities/properties makes the above cards popular?
On the other hand, the Ranked ladder resets to mark a new Season at the start of every calendar month. Players take this opportunity to improve upon their previous ranking, and they may try to include new cards to overcome the popular decks that they tend to encounter.
From the graph above, there is usually a spike in the number of decks submitted when a new card set is released (marked with dark lines), which gradually tapers off until the next card set is released.
A possible question to ask may be:
Are there any shifts in card popularity in the three months following the release of the Old Gods card set (2016-04-26)?
Looking at the number of decks submitted every day for the first three months following 26th April in the plot below, the number of decks submitted (and therefore the number of cards included) sharply tapers off after the first week.
While cards from the latest card set were popular in the first week (still in April), cards from the older card sets (such as Classic) returned to the top spots in subsequent months. However, since the data concerns decks submitted (not necessarily played in games) we cannot infer that the new cards fell in popularity, only that decks submitted later favoured including older cards over the new ones.
| Month | Name | Card Set | No. of Decks | Total No. of Decks | % of Decks |
|---|---|---|---|---|---|
| Apr 2016 | C’Thun | Whispers of the Old Gods | 2126 | 6721 | 31.6 |
| Apr 2016 | Azure Drake | Hall of Fame | 2110 | 6721 | 31.4 |
| Apr 2016 | Sylvanas Windrunner | Hall of Fame | 1984 | 6721 | 29.5 |
| Apr 2016 | Disciple of C’Thun | Whispers of the Old Gods | 1866 | 6721 | 27.8 |
| Apr 2016 | Beckoner of Evil | Whispers of the Old Gods | 1825 | 6721 | 27.2 |
| May 2016 | Sylvanas Windrunner | Hall of Fame | 3742 | 10546 | 35.5 |
| May 2016 | Azure Drake | Hall of Fame | 3333 | 10546 | 31.6 |
| May 2016 | Brann Bronzebeard | League of Explorers | 2204 | 10546 | 20.9 |
| May 2016 | C’Thun | Whispers of the Old Gods | 2188 | 10546 | 20.7 |
| May 2016 | Emperor Thaurissan | Blackrock Mountain | 2132 | 10546 | 20.2 |
| Jun 2016 | Sylvanas Windrunner | Hall of Fame | 1563 | 4776 | 32.7 |
| Jun 2016 | Azure Drake | Hall of Fame | 1526 | 4776 | 32.0 |
| Jun 2016 | Emperor Thaurissan | Blackrock Mountain | 979 | 4776 | 20.5 |
| Jun 2016 | Acolyte of Pain | Classic | 927 | 4776 | 19.4 |
| Jun 2016 | Doomsayer | Classic | 878 | 4776 | 18.4 |
| Jul 2016 | Azure Drake | Hall of Fame | 1001 | 2858 | 35.0 |
| Jul 2016 | Sylvanas Windrunner | Hall of Fame | 953 | 2858 | 33.3 |
| Jul 2016 | Emperor Thaurissan | Blackrock Mountain | 638 | 2858 | 22.3 |
| Jul 2016 | Acolyte of Pain | Classic | 599 | 2858 | 21.0 |
| Jul 2016 | Doomsayer | Classic | 572 | 2858 | 20.0 |
Which were the most popular cards (Neutral and Class-specific) for each card set?
The first table shows the most popular Neutral card from each card set, with many of them being Legendary:
| Card Set | Name | Class | Rarity | No. of Decks |
|---|---|---|---|---|
| Basic | Acidic Swamp Ooze | Neutral | Free | 17107 |
| Blackrock Mountain | Emperor Thaurissan | Neutral | Legendary | 37614 |
| Classic | Defender of Argus | Neutral | Rare | 31081 |
| Curse of Naxxramas | Sludge Belcher | Neutral | Rare | 34718 |
| Goblins vs Gnomes | Dr. Boom | Neutral | Legendary | 37033 |
| Hall of Fame | Azure Drake | Neutral | Rare | 62327 |
| League of Explorers | Brann Bronzebeard | Neutral | Legendary | 25885 |
| Mean Streets of Gadgetzan | Kazakus | Neutral | Legendary | 5308 |
| Mean Streets of Gadgetzan | Aya Blackpaw | Neutral | Legendary | 5308 |
| One Night in Karazhan | Barnes | Neutral | Legendary | 9228 |
| The Grand Tournament | Justicar Trueheart | Neutral | Legendary | 15013 |
| Whispers of the Old Gods | N’Zoth, the Corruptor | Neutral | Legendary | 11764 |
The following plot shows the relative popularity of Neutral cards in each card set. Notably, the Basic, Blackrock Mountain and Karazhan sets have an overwhelming favourite (with a large difference over the 2nd most popular card):
## Warning: Removed 4 rows containing missing values (geom_point).
The next table shows the most popular Class-specific cards from each card set.
| Card Set | Name | Class | Type | Rarity | No. of Decks |
|---|---|---|---|---|---|
| Basic | Frostbolt | Mage | Spell | Free | 22374 |
| Blackrock Mountain | Imp Gang Boss | Warlock | Minion | Common | 11162 |
| Classic | Eviscerate | Rogue | Spell | Common | 17717 |
| Curse of Naxxramas | Death’s Bite | Warrior | Weapon | Common | 9012 |
| Goblins vs Gnomes | Shielded Minibot | Paladin | Minion | Common | 9620 |
| Hall of Fame | Power Overwhelming | Warlock | Spell | Common | 13400 |
| League of Explorers | Entomb | Priest | Spell | Common | 10527 |
| Mean Streets of Gadgetzan | Dragonfire Potion | Priest | Spell | Epic | 3410 |
| One Night in Karazhan | Maelstrom Portal | Shaman | Spell | Rare | 5505 |
| The Grand Tournament | Totem Golem | Shaman | Minion | Common | 10933 |
| Whispers of the Old Gods | Thing from Below | Shaman | Minion | Rare | 7361 |
The following plot shows the relative popularity of Class cards in each card set. Besides the Hall of Fame (which usually consists of Classic cards), the Naxxramas set has an overwhelming favourite in Death’s Bite (Warrior), which was highly valued both for its strong damage and Deathrattle effect.
## Warning: Removed 4 rows containing missing values (geom_point).
So far, we have looked at cards that users tend to include in decks in Standard format for Ranked play, which is also used for official Hearthstone tournaments - making these popular cards highly visible to a wide audience. We have also looked at card popularity when broken down by various categories, such as class, time period and card set.
Are there any limitations to the data that may have affected our analysis?
The major limitation of this data is that it only looks at decks submitted to a third-party website, which brings up the following issues:
rating attribute may reflect how strong other players consider a deck, it is also biased towards the popularity of the user as well as the date of submission:
How can we expand on this analysis?